
.function {
    .foo(@a) {
        return: foo @a;
    }

    .foo(@a, @b) {
        return: foo @a @b;
    }

    .bar(@a, @b: none) {
        return: bar @a @b;
    }

    .bar(@a) {
        return: bar @a;
    }

    .bar(@a, 5) {
        return: bar @a explicit-5;
    }
}

overloading {
    foo-1: foo(1);
    foo23: foo(2, 3);
    bar-1: bar(1);
    bar23: bar(2, 3);
    bar45: bar(4, 5);
}
